<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>关于右键菜单的制作</title>

<para>
<ptitle>右键菜单是指</ptitle>
　点下鼠标右键后呼叫的 KAG 的游戏界面。<r/>
　例如使用右键来调出存储/读取画面。<r/>
</para>

<para>
<ptitle>总之先上范例</ptitle>
　调用右键菜单的指令是 rclick 。使用这个指令、可以设定点下右键后呼叫的剧本段落。此外，也可以不使用呼叫（调用菜单后，使用return可以返回游戏），而是直接跳转到某个标签（右键跳跃后无法返回，等同于jump）。<r/>
<r/>
　例如，在 rlick.ks 里写入以下内容。<r/>
<example>
*rclick<r/>
@rclick jump=true storage="rclick.ks" target="*exit" enabled=true<r/>
@current layer=message1<r/>
@layopt layer=message0 page=fore visible=false<r/>
@layopt layer=message1 page=fore visible=true<r/>
@er<r/>
这里是右键菜单。<r/>
[s]<r/>
<r/>
*exit<r/>
@layopt layer=message1 page=fore visible=false<r/>
@layopt layer=message0 page=fore visible=true<r/>
@current layer=message0<r/>
@rclick call=true storage="rclick.ks" target="*rclick" enabled=true<r/>
@return<r/>
</example>
　接下来，例如说，我们在 first.ks 里写入以下内容。
<bq>
@rclick call=true storage="rclick.ks" target="*rclick" enabled=true<r/>
</bq>
<r/>
　这样的话、点下鼠标右键后就会呼叫 rclick.ks 的 *rclick 标签。<r/>
　如上的例子，在 rclick.ks 内、首先进行了一次右键操作的更改，将右键操作设定为“跳转到 *exit” 。这样的话、调出右键菜单后，再点一次右键，就会返回游戏中了。<r/>
　在菜单调用的时候隐藏显示一般游戏对话的 文字层 0 。这样的话、 文字层 0 上即使有选择支等等也暂时无法操作。<r/>
　同时显示文字层 1 、在文字层 1 上显示「这里是右键菜单。」，并用 [s] 等待玩家操作。<r/>
</para>

<para>
<ptitle>比较难的例子</ptitle>
　以下是一个比较复杂的右键菜单范例，可以在右键菜单内进行查看历史记录，存储，读取等操作。
<example>
*sub1<r/>
@tempsave<r/>
; ↑临时保存游戏状态<r/>
@history output=false<r/>
; ↑右键菜单内的文字不会输出在历史记录内<r/>
@mapdisable layer=0 page=fore<r/>
; ↑假如当前显示着地图的话，就用这种方式使地图操作无效（和隐藏文字层是一样的，为了防止误操作）<r/>
@backlay<r/>
@layopt layer=message1 page=back visible=true<r/>
; ↑右键菜单将使用 文字层 1 来显示文字<r/>
@layopt layer=message0 page=back visible=false<r/>
@current layer=message1 page=back<r/>
@position left=0 top=0 width=640 height=480<r/>
@eval exp="f.r_first=true"<r/>
; ↑从游戏打开右键主菜单时，使用 trans 效果的标记（从下一级菜单，如存储菜单返回主菜单则不使用 trans 效果显示）。<r/>
;<r/>
*menu<r/>
@er<r/>
@nowait<r/>
[link target=*hide]隐藏文字层[endlink][r]<r/>
[link target=*history]查看历史记录[endlink][r]<r/>
[link target=*load]读取游戏[endlink][r]<r/>
[link target=*save]存储游戏[endlink][r]<r/>
[link target=*gotostart]返回标题[endlink][r]<r/>
[link target=*ret]回到游戏[endlink][r]<r/>
@endnowait<r/>
@current layer=message1 page=fore<r/>
@if exp="f.r_first"<r/>
@trans time=500 rule=trans1 vague=128<r/>
@wt<r/>
@endif<r/>
@eval exp="f.r_first=false"<r/>
@s<r/>
<r/>
*ret<r/>
; 从右键菜单返回游戏<r/>
@tempload bgm=false se=false backlay=true<r/>
;使用tempload的话，右键菜单里所有更改的状态都会复原
;例如历史记录会恢复输出，文字层恢复显示等
@trans time=500 rule=trans1 vague=128<r/>
@wt<r/>
@return<r/>
<r/>
*hide<r/>
; 隐藏文字层<r/>
@hidemessage<r/>
@jump target=*menu<r/>
<r/>
*history<r/>
; 显示历史记录<r/>
@showhistory<r/>
@jump target=*menu<r/>
<r/>
*load<r/>
; 读取游戏<r/>
; emb exp= .... 这部分请参考 <link href="TJSTips"/> 的说明<r/>
@er<r/>
@nowait<r/>
[link target=*lt0][emb exp="kag.getBookMarkPageName(0)"][endlink][r]<r/>
[link target=*lt1][emb exp="kag.getBookMarkPageName(1)"][endlink][r]<r/>
[link target=*lt2][emb exp="kag.getBookMarkPageName(2)"][endlink][r]<r/>
[link target=*lt3][emb exp="kag.getBookMarkPageName(3)"][endlink][r]<r/>
[link target=*lt4][emb exp="kag.getBookMarkPageName(4)"][endlink][r]<r/>
[link target=*menu]返回[endlink][r]<r/>
@endnowait<r/>
@s<r/>
<r/>
*lt0<r/>
@load place=0 ask=true<r/>
@jump target=*menu<r/>
*lt1<r/>
@load place=1 ask=true<r/>
@jump target=*menu<r/>
*lt2<r/>
@load place=2 ask=true<r/>
@jump target=*menu<r/>
*lt3<r/>
@load place=3 ask=true<r/>
@jump target=*menu<r/>
*lt4<r/>
@load place=4 ask=true<r/>
@jump target=*menu<r/>
<r/>
*save<r/>
; 存储游戏<r/>
; emb exp= .... 这部分请参考 <link href="TJSTips"/> 的说明<r/>
@er<r/>
@nowait<r/>
[link target=*st0][emb exp="kag.getBookMarkPageName(0)"][endlink][r]<r/>
[link target=*st1][emb exp="kag.getBookMarkPageName(1)"][endlink][r]<r/>
[link target=*st2][emb exp="kag.getBookMarkPageName(2)"][endlink][r]<r/>
[link target=*st3][emb exp="kag.getBookMarkPageName(3)"][endlink][r]<r/>
[link target=*st4][emb exp="kag.getBookMarkPageName(4)"][endlink][r]<r/>
[link target=*menu]返回[endlink][r]<r/>
@endnowait<r/>
@s<r/>
<r/>
*st0<r/>
@save place=0 ask=true<r/>
@jump target=*menu<r/>
*st1<r/>
@save place=1 ask=true<r/>
@jump target=*menu<r/>
*st2<r/>
@save place=2 ask=true<r/>
@jump target=*menu<r/>
*st3<r/>
@save place=3 ask=true<r/>
@jump target=*menu<r/>
*st4<r/>
@save place=4 ask=true<r/>
@jump target=*menu<r/>
<r/>
<r/>
*gotostart<r/>
; 「返回标题画面」<r/>
@gotostart ask=true<r/>
@jump target=*menu<r/>
</example>
<r/>
　此外，关于在存档时保存缩略图的情况，有一些需要注意的要点，请参考 locksnapshot 和 unlocksnapshot 的指令说明。<r/>
</para>
</doc>